/**
  ******************************************************************************
  * @file    event_cfg.h
  * @author  Yun
  * @version V1.3.0
  * @date    2025-02-21
  * @brief   事件通用类型定义
  * @license EULA (End User License Agreement)
  *          Copyright (c) 2025 星瑜科技自动化 Co., Ltd. All rights reserved.
  ******************************************************************************
  */

#ifndef EVENT_CFG_H
#define EVENT_CFG_H

/*---------------------- Includes ----------------------*/
#include "stdint.h"
#include "string.h"

/*---------------------- 宏定义 ----------------------*/
/**
  * @brief 最大同时发生事件数量
  */
#define EVENT_HAPPENED_MAX_NUM       20

/**
  * @brief 事件池最大容量
  */
#define EVENT_POOL_MAX_NUM           10

/*---------------------- 枚举定义 ----------------------*/
/**
  * @brief 事件ID枚举
  */
typedef enum Event_Id {
    EVENT_NONE = 0U,            /*!< 无事件 */
    EVENT_SYS_CIRCLE,           /*!< 系统周期性事件 */
    EVENT_DEV_TIM_TIMOUT,       /*!< 定时器超时事件 */
    EVENT_DEV_UART_RX,          /*!< UART接收完成事件 */
    EVENT_DEV_UART_TX,          /*!< UART发送完成事件 */
    EVENT_DEV_LED_ON,           /*!< LED点亮事件 */
    EVENT_DEV_LED_OFF,          /*!< LED熄灭事件 */
    EVENT_DEV_KEY_PRESSED,      /*!< 按键按下事件 */
    EVENT_DEV_KEY_RELEASED,     /*!< 按键释放事件 */

    /* 用户自定义事件开始 */

    /* 用户自定义事件结束 */

    EVENT_ID_MAX                /*!< 最大事件ID标记 */
} Event_Id_TypeDef;

/**
  * @brief 事件状态枚举
  */
typedef enum Event_State {
    EVENT_STATE_IDLE = 0U,      /*!< 事件系统空闲状态 */
    EVENT_STATE_BUSY            /*!< 事件系统忙状态 */
} Event_State_TypeDef;

#endif //EVENT_CFG_H
